/**
 * AES 对称加密（不安全）
 */
import CryptoJS from "crypto-js";

export default {
	key: import.meta.env.VITE_ENCRYPT_KEY,
	iv: import.meta.env.VITE_IV,
	/**
	 * 接口数据加密函数
	 * @param str string 需加密的json字符串
	 * @param key string 加密key(16位)
	 * @param iv string 加密向量(16位)
	 * @return string 加密密文字符串
	 */

	encrypt(str, key = this.key, iv = this.iv) {
		//密钥16位
		let key1 = CryptoJS.enc.Utf8.parse(key);
		//加密向量16位
		let iv1 = CryptoJS.enc.Utf8.parse(iv);
		let encrypted = CryptoJS.AES.encrypt(str, key1, {
			iv: iv1,
			mode: CryptoJS.mode.CBC,
			padding: CryptoJS.pad.Pkcs7
		});
		return encrypted.toString();
	},

	/**
	 * 接口数据解密函数
	 * @param str string 已加密密文
	 * @param key string 加密key(16位)
	 * @param iv string 加密向量(16位)
	 * @returns {*|string} 解密之后的json字符串
	 */
	decrypt(str, KEY = this.key, IV = this.iv) {
		let keys = CryptoJS.enc.Utf8.parse(KEY);
		let ivs = CryptoJS.enc.Utf8.parse(IV);
		let decrypt = CryptoJS.AES.decrypt(str, keys, {
			iv: ivs,
			mode: CryptoJS.mode.CBC,
			padding: CryptoJS.pad.Pkcs7
		});
		return decrypt.toString(CryptoJS.enc.Utf8);
	}
};
